function SarfFix2_RevEng_MoveTo(self, itemID)
	if ( not itemID ) then
		return false;
	end

	if ( type(self.TradeSkills) ~= "table" ) then
		return false;
	end

	local itemData = self.TradeSkills[itemID];
	if ( type(itemData) ~= "table" ) then
		return false;
	end

	SetTradeSkillSubClassFilter(0, 1, 1)
	
	local index = itemData[1];
	local itemName = itemData[2];
	
	-- not really necessary as the line below selects it as well
	SelectTradeSkill(index)
	
	TradeSkillFrame_SetSelection(index)
	
	RevEng:ScrollDownToIndex(TradeSkillListScrollFrame, index, itemName);
	
end

function SarfFix2_RevEng_ScrollDownToIndex(self, scrollFrame, index, name)
	scrollFrame:SetVerticalScroll(0)
	local inc = 16 * (index - 1)

	local scrollmax = scrollFrame:GetVerticalScrollRange()
	scrollFrame:SetVerticalScroll(inc)
	while(not string.find(TradeSkillSkill1:GetText(), name) and -- insurance =P 
			inc < scrollmax ) do
		inc = inc + 16
		scrollFrame:SetVerticalScroll(inc)
	end
end


function SarfFix2:ReverseEngineering_Initialize()
	if ( type(RevEng) == "table" ) then
		RevEng.ScrollDownToIndexOld = RevEng.ScrollDownToIndex;
		RevEng.ScrollDownToIndex = SarfFix2_RevEng_ScrollDownToIndex;
		RevEng.MoveToOld = RevEng.MoveTo;
		RevEng.MoveTo = SarfFix2_RevEng_MoveTo;
	end
end

SarfFix2:PatchAddon("ReverseEngineering", SarfFix2.ReverseEngineering_Initialize);

